1. Field of the Invention
This invention relates generally to providing content from a server environment to a client over a network such as the internet, and more particularly, a method, system, and computer program product for increasing the efficiency of providing content.
2. Description of the Related Art
Broadband internet access is becoming commonplace as network technology improves. More and more, consumers connect to the internet via cable modems, DSL connections and other such high-speed connections. Because consumers have access to the internet at these high speeds, the size and frequency of downloaded material has increased dramatically. Internet-delivered video, which was impractical using even the fastest dial-up connection, is becoming more practical and commonplace today. As a result, significant research has gone into increasing the efficiency of delivering video via the internet, for example, by using Content Distribution Networks (CDNs).
CDNs were developed to handle large transmissions of web content occurring over the internet. CDNs store and serve content from many distributed locations rather than from a few centralized origin points. In many instances, CDNs store replicas of content near user locations, e.g., on edge servers, so that frequently used content can be quickly retrieved. This improves the quality of content delivery to end-users and lowers network congestion.
There are three basic elements involving any transmission of content from a server to a client. The first element is the server itself, which is the storage source of the content being provided. Typically, the server is maintained by a content provider and is accessible via a web site or direct network connection. The second element in the transmission is the network itself. The network typically includes the Internet, comprising backbone carriers who provide wide-area transport for Internet Service Providers (ISPs), who in turn provide end users with Internet connectivity. The third element, the client, typically is an end user using a PC at home or office. The client is typically the entity requesting the content from the server.
Each element of the transaction involves the use of significant resources. At the server, large files such as video content require large storage areas (typically disk drives) and use many server cycles and disk cycles to retrieve the video from storage and send it on its way out over the network. On the network, optimal functionality hinges on the bandwidth, where wider is better. Finally, at the client, streaming video must be buffered as it is received in order for it to be properly viewed. Thus, significant memory and processing power is required to decode, play, and store the video content at the client.
The past models for providing efficient delivery and use of large content files such as video involved maximizing the use of the first two elements, i.e., the servers and wide band networks. For example, server caches are used to store blocks of content that are frequently or recently requested, so that the time consumed in reading the block from the disk storage of the server can be saved. These models were developed at a time when all forms of memory at the client (including disk storage devices such as hard drives) were expensive and, thus, fairly limited. Thus, developers of current systems turned a blind eye to the client when developing improved content delivery systems.
Within the last several years, however, client-side memory costs have dropped dramatically in price. Forty-gigabyte (40 GB) hard drives are now standard on personal computer systems and significantly larger hard drives are available at a minimal price. As noted above, prior art models do not take into consideration the large storage size now available on client machines. Accordingly, it would be desirable to have a method and system for providing large content delivery, such as video, that takes advantage of the current prevalence of the relatively inexpensive large data storage available on client machines.